package ejemplo_1.BusinessDelegate;

import java.net.MalformedURLException;
import java.rmi.Naming;
import java.rmi.NotBoundException;
import java.rmi.RemoteException;
import java.util.ArrayList;

import ejemplo_1.Exception.CommunicationException;
import ejemplo_1.Exception.LookUpException;
import ejemplo_1.Exception.URLException;
import ejemplo_1.bean.AlumnoVO;
import ejemplo_1.interfaz.TDAManejoDatos;

public class BDAlumno {
	
	private static BDAlumno instancia;
	private TDAManejoDatos manejoAlumnos;
	
	private BDAlumno() throws URLException, CommunicationException, LookUpException {
			try {
				manejoAlumnos = (TDAManejoDatos)Naming.lookup ("//localhost/GestionAlumnos");
			} catch (MalformedURLException e) {
				throw new URLException();
			} catch (RemoteException e) {
				throw new CommunicationException();
			} catch (NotBoundException e) {
				throw new LookUpException();
			}
	}
	
	public static BDAlumno getInstancia() throws URLException, CommunicationException, LookUpException{
		if(instancia == null){
			instancia = new BDAlumno();
		}
		return instancia;
	}
	
	
	public void AgregarAlumno(AlumnoVO a) throws CommunicationException {
		try {
			manejoAlumnos.AgregarAlumno(a);
		} catch (RemoteException e){
			throw new CommunicationException();
		}
	}
	
	public ArrayList<AlumnoVO> obtengoAlumnos() throws RemoteException {
		return manejoAlumnos.obtengoAlumnos();
	}
	
	public AlumnoVO obtengoAlumnoPorLegajo(int nroAlumno) throws CommunicationException {
		try {
			return manejoAlumnos.obtengoAlumnoPorLegajo(nroAlumno);
		} catch (RemoteException e){
			throw new CommunicationException();
		}
		
	}

}
